package com.ruoyi.web.common.task;

import com.ruoyi.web.common.RegularUpdateController;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SignatureException;
import java.security.spec.InvalidKeySpecException;

/**
 * 调用第三方的定时任务
 */
@Component
public class MyScheduled {

    @Resource
    private RegularUpdateController updateController;

    /**
     * 每天整点执行一次  数据推送
     */
    @Async
//    @Scheduled(cron = "0 33 * * * ?")  // 每小时的第30分钟执行
    @Scheduled(cron = "0 30 * * * ?")
    public void updateWaterQuality() {
        updateController.updateWaterQuality();
    }
    /**
     * 每天1:20执行一次  数据推送
     */
    @Async
//    @Scheduled(cron = "0 23 1 * * ?")  //我这里暂时不需要运行这条定时任务，所以将注解注释了，朋友们运行时记得放开注释啊
    @Scheduled(cron = "0 21 1 * * ?")
    public void updateDataTermite() {
        updateController.updateTermite();
    }

    /**
     * 每天整点执行一次  数据推送
     */
    @Async
//    @Scheduled(cron = "0 05 * * * ?")  // 每小时的第2分钟执行
    @Scheduled(cron = "0 02 * * * ?")
    public void updateSensorMsgData() {
        updateController.updateSensorMsg();
        updateController.updateMsgToData();
    }

    @Async
//    @Scheduled(cron = "0 06 * * * ?")  // 每小时的第3分钟执行
    @Scheduled(cron = "0 03 * * * ?")
    public void updateSYJData() {
        updateController.updateMsgToSYData();
    }

    @Async
//    @Scheduled(cron = "0 15 * * * ?")  // 每小时的第12分钟执行
    @Scheduled(cron = "0 12 * * * ?")
    public void updateGNSSData() {
        updateController.updateGNSSData();
    }

    /**
     * 每天整点执行一次  数据推送
     */
    @Async
//    @Scheduled(cron = "0 0 * * * ?")  // 每小时的第30分钟执行
    @Scheduled(cron = "0 3 * * * ?")
    public void updateWeather() throws InvalidKeySpecException, NoSuchAlgorithmException, SignatureException, InvalidKeyException {
        updateController.updateWeather();
    }
}
